package com.lhq.lambda;

import com.sun.xml.internal.stream.StaxErrorReporter;
import org.junit.Test;

import java.util.Comparator;
import java.util.TreeSet;
import java.util.function.BinaryOperator;
import java.util.function.Consumer;
import java.util.function.Function;

/**
 * 方法引用与构造器引用
 * 方法引用：
 * 使用操作符 “::” 将方法名和对象或类的名字分隔开来。
 * 如下三种主要使用情况：
 *  对象::实例方法
 *  类::静态方法
 *  类::实例方法
 *
 * 当需要引用方法的第一个参数是调用对象，并且第二个参数是需要引
 * 用方法的第二个参数(或无参数)时：ClassName::methodName
 *
 * 构造器引用：
 * 格式:ClassName::new
 */
public class FunctionLink {
    @Test
    public void test3(){
        Function<Integer,MyClass> fun=(n)->new MyClass(n);
        Function<Integer,MyClass> fun1=MyClass::new;



    }
    @Test
    public void test2(){
        BinaryOperator<Double> bo=(x,y)->Math.pow(x,y);

        BinaryOperator<Double> bo1=Math::pow;
        bo1.apply(2.0,3.0);
    }


    @Test
    public void test1(){
        Consumer<String> consumer=System.out::println;

        consumer.accept("jkdwe");
    }
}
